home *** CD-ROM | disk | FTP | other *** search
-
- AUSH - Manuel de référence
-
-
-
-
-
- 1. Avertissement
-
- Ce manuel décrit la version 1.50 de l'interpréteur de commandes
- AUSH. Ce programme est placé dans le domaine public, avec autorisation de le
- copier librement et de le diffuser par n'importe quels moyens, à condition
- que le produit soit diffusé dans son intégralité, et sans aucune
- modification. AUSH est (c)1992 par Denis GOUNELLE, toute utilisation
- commerciale ou vente de ce programme sans autorisation écrite est
- STRICTEMENT INTERDITE.
- Malgré de nombreux tests, je ne peux garantir qu'AUSH ne contient
- aucune erreur. VOUS UTILISEZ CE PROGRAMME A VOS RISQUES ET PERILS. Je ne
- pourrai en aucun cas être tenu responsable de tout dommage, direct ou
- indirect, résultant de l'utilisation d'AUSH.
-
- 2. Introduction
-
- AUSH (Amiga Ultimate SHell) est un interpréteur de commande (ou
- "shell") écrit pour l'Amiga, et destiné à remplacer entièrement le shell de
- Commodore. Il s'inspire de tous les shells que j'ai utilisé jusqu'ici, aussi
- bien sous UNIX (sh, csh, et surtout tcsh 6.00.03) que sur Amiga (AShell 1.3
- et Csh 4.01A), tout en intégrant de nombreuses idées personnelles et en
- gardant la plus grande compatibilité possible avec les shells Commodore et
- ARP.
-
- Vous êtes invités à me donner votre avis (critiques et suggestions)
- sur ce programme, en m'écrivant à l'adresse suivante :
-
- M. GOUNELLE Denis
- Boite 71
- 6, rue des cailloux
- 92110 CLICHY - FRANCE
-
- L'éditeur de ligne de commande a été écrit à partir de celui de Csh
- v4.02A (par Mattew DILLON/Steve DREW/Carlo BORREO & Cesare DIENI).
- Merci à Pierre ARDICHVILI, Jean-Yves PROUX, Jean-Philippe RAPP, et
- Michel SCHINZ pour leurs tests et leurs suggestions. Merci également à Josef
- EGLOFF pour la traduction des messages d'erreur en allemand.
-
- 3. Installation
-
- Si votre Amiga dispose du système 1.3, vous devez d'abord installer
- la librairie ARP, si ce n'est déjà fait, en copiant le fichier "arp.library"
- dans le répertoire "LIBS:".
- Copiez ensuite les fichiers "AUSH" (le shell lui-même) et "NewAUSH"
- (commande pour lancer un nouveau shell) dans le répertoire "C:". Notez que
- AUSH et NewAUSH sont écrits en code ré-entrant, et peuvent donc parfaitement
- être rendus résidents.
-
- 4. La commande NewAUSH
-
- Cette commande est l'équivalent des commandes "NewCLI" et "NewShell"
- du shell de Commodore. Elle ne fonctionnera que si le programme "AUSH" se
- trouve dans le chemin d'accès défini par la commande "Path". Pour lancer un
- nouveau shell, depuis la ligne de commande, tapez :
-
- NewAUSH [spécification de fenêtre]
-
- exemple : NewAUSH CON:0/11/640/180/AUSH
-
- Pour lancer un nouveau shell depuis le WorkBench, créez une icône de
- type "Project". Indiquez éventuellement une taille de pile (champ "STACK")
- et une spécification de fenêtre (champ "TOOL TYPE", sous la forme
- "WINDOW=spécification"). N'oubliez pas de mettre le chemin d'accès à NewAUSH
- dans le champ "DEFAULT TOOL".
-
- 5. Notions de base
-
- Lorsque vous lancez AUSH, un message indiquant la version du
- programme apparait, suivit d'une chaine d'invite (ou "prompt"). Par défaut,
- cette chaine indique le numéro du shell, suivit du répertoire courant. Le
- shell attend alors vos commandes.
-
- Une commande simple est une suite de mots séparés par un ou
- plusieurs espaces. Le premier mot indique la commande à exécuter, et les
- autres sont les arguments à passer à cette commande. La longueur maximale
- d'une ligne de commande est de 256 caractères dans le cas d'une commande
- externe.
- Si le premier mot correspond à un alias, la substitution
- correspondante est effectuée. Cela continue tant que c'est possible, ce qui
- veut dire qu'un alias peut être défini en fonction d'un autre. Notez
- cependant qu'il n'y a pas de contrôle de récursivité des définitions. Vous
- pouvez désactiver la substitution des alias en ajoutant le caractère "\"
- devant le nom de la commande (par exemple "\ls df0:")
- AUSH examine également les arguments, et remplace certains d'entre
- eux en fonction des règles suivantes :
-
- ; tout ce qui suit est un commentaire, et est ignoré.
- ^car remplacé par "CTRL-car" si "car" est une lettre, par
- "car" sinon.
- =n remplacé par le n-ième répertoire dans la pile des
- répertoires.
- $var remplacé par la valeur de la variable "var" (cherchée
- d'abord dans les variables locales, puis dans les
- variables globales, et enfin dans les variables
- ARP/Commodore et Manx) ou par une chaine vide si cette
- variable n'est pas définie.
- pattern remplacé par le nom de tous les fichiers correspondant.
- Une "pattern" est un mot contenant au moins un des
- méta-caractères ARP, dont la syntaxe est :
-
- ? n'importe quel caractère
- #c n'importe quel nombre de fois (même zéro)
- le caractère c
- #? ou * n'importe quelle chaine, même vide
- [liste] n'importe lequel des caractères indiqués
- (exp1|exp2) exp1 ou exp2
- ~exp tout sauf exp
-
- {expr} remplacé par la valeur de l'expression (voir la syntaxe
- plus loin).
- !! remplacé par la dernière commande dans l'historique.
- !n remplacé par la commande numéro "n" dans l'historique.
- !chaine remplacé par la dernière commande commençant par
- "chaine" dans l'historique.
- `cmd` remplacé par la première ligne produite en sortie par la
- commande indiquée. Les espaces en tête sont éliminés
- avant remplacement, la ligne est considéré comme un seul
- argument et n'est pas ré-interprété.
- Exemple : la commande "set toto `type config`" copie le
- contenu de la première ligne du fichier "config" dans la
- variable locale "toto".
- \car copie le caractère indiqué sans l'interpréter.
- 'chaine' copie la chaine sans interprétation (à part de la forme
- "\car").
- "chaine" copie la chaine sans interprétation, à part des formes
- "^car", "=n", "$var", "{expr}" et "\car". De plus,
- l'extension des "patterns" n'est pas désactivée.
-
- AUSH est également capable de rediriger l'entrée ou la sortie d'une
- commande : au lieu de se faire sur la fenêtre courante, elle se fera sur le
- fichier indiqué. La syntaxe à respecter est la suivante :
-
- >nom redirection de la sortie vers le fichier "nom". Le
- fichier est écrasé s'il existe déjà, créé sinon.
- >>nom redirection de la sortie vers le fichier "nom". La
- sortie est ajoutée à la fin du fichier s'il existe,
- sinon le fichier est créé.
- <nom redirection de l'entrée depuis le fichier "nom".
-
- La spécification de ces redirections peut se faire n'importe où sur
- la ligne de commande. Il peut y avoir un ou plusieurs espaces entre les
- caractères de redirection et le nom de fichier (comme par exemple
- "list > maliste").
-
- Une commande complexe est composée d'au moins deux commandes simples
- enchainées par une des formes suivantes :
-
- cmd1|cmd2|... exécution successive de commandes simples, avec
- "pipes" (la sortie de la commande à gauche du
- caractère "|" est utilisée comme entrée par la
- commande indiquée à droite), tant que le code retour
- est nul.
- cmd1,cmd2,... exécution successive de commandes, tant que le code
- retour est nul. Vous pouvez spécifier des commandes
- simples, mais aussi des enchainements par pipes (par
- exemple "cd ram: , list | wc , delete toto").
-
- Le code retour d'une commande complexe est celui de la dernière
- commande simple exécutée. Seule la dernière commande simple d'une commande
- complexe peut être lancée en arrière plan.
-
- Une fois l'analyse de la ligne de commande terminée, AUSH lance
- l'exécution de la commande correspondante. La recherche se fait d'abord dans
- la liste des commandes internes au shell, puis dans la liste des commandes
- résidentes, et enfin dans les répertoires indiqués à l'aide la commande
- "Path". Une fois la commande lancée, AUSH attend la fin de son exécution,
- met à jour certaines variables (comme celle indiquant le code retour de la
- dernière commande exécutée) puis affiche de nouveau la chaine d'invite.
- Vous pouvez demander une exécution en arrière plan, c'est-à-dire que
- AUSH n'attendra pas la fin de la commande. Il vous faudra alors spécifier le
- caractère "&" sur la ligne de commande (par exemple "list >maliste &"). Le
- shell affichera alors le numéro de processus de cette commande puis le
- prompt ré-apparaitra immédiatement.
- Par défaut, les commandes héritent de la priorité du shell, mais
- AUSH vous permet de modifier temporairement cette priorité. Ainsi, si vous
- tapez une ligne de la forme "cmd @n", la commande indiquée sera exécutée
- avec la priorité "n" (par exemple "list @-3" lancera la commande "list" avec
- la priorité -3). Ceci ne marchera cependant pas pour les commandes internes.
- De même, lors du lancement en arrière plan, vous pouvez faire suivre le
- caractère "&" par la priorité à donner à la commande. Par exemple, "list
- >maliste &5" lancera la commande "list" en arrière plan, avec la priorité 5.
- Notez que les spécifications "&" et "@" peuvent être indiquées
- n'importe où sur la ligne de commande.
-
- 6. Les variables
-
- AUSH vous permet de définir des variables, comme dans un langage de
- programmation classique. Les caractères autorisés pour les noms de variables
- sont les lettres minuscules et majuscules, les chiffres, et le caractère
- souligné. Notez que minuscules et majuscules sont différenciées
- (contrairement aux noms de fichiers). Ces variables peuvent contenir
- n'importe quelle valeur, aussi bien numérique que alphanumérique.
- Les variables globales sont accessibles à tous les niveaux
- d'exécution, c'est-à-dire aussi bien en mode interactif que dans les
- fichiers de commandes. Elles ne peuvent être détruites. Notez qu'il ne
- s'agit pas des variables au sens ARP ou Commodore. Elles ne sont pas
- partagées par plusieurs shells.
- Une variables locale n'est accessible que dans le niveau d'exécution
- où elle a été définie pour la première fois. Lors du retour au niveau
- précédent, les variables locales sont détruites automatiquement.
- Certaines variables permettent de contrôler et de paramètrer AUSH.
- Ces variables sont décrites plus loin.
-
- 7. Expressions
-
- AUSH peut évaluer des expressions entières, exprimées en notation
- polonaise inversée postfixée. Vous pouvez utiliser des variables locales ou
- globales dans ces expressions, si leurs valeurs sont numériques. Il est
- possible d'indiquer des nombres hexadécimaux (précédés par "0x", par exemple
- "0x13e"). Par défaut le résultat est en décimal. Les opérateurs reconnus
- sont :
-
- + addition
- - soustraction
- * multiplication
- / division
- % modulo (reste de la division entière)
- < décalage à gauche
- > décalage à droite
- & et
- | ou
- sx dépile le sommet de pile dans le registre x
- lx empile le contenu du registre x
- HEX affiche le résultat en hexadécimal
-
- Il y a dix registres (désignés par un chiffre de 0 à 9) initialisés
- à zéro au démarrage du shell. Ils conservent leur valeur entre deux
- évaluations d'expression. Les nombres et les opérateurs doivent être séparés
- par au moins un espace, sauf le - unaire (négation).
-
- Exemples :
-
- echo { 34 3 / 4 + } => 15
- echo { 7 3 - } => 4
- echo { 10 -2 + } => 8
-
- set cpt 3
- echo { $cpt 2 * } => 6
- set cpt { $cpt 1 + }
- echo $cpt => 4
-
- 8. Les fichiers de commandes
-
- Vous pouvez regrouper plusieurs commandes dans un fichier, et le
- faire exécuter par AUSH comme un programme quelconque. Tout ce passera alors
- comme si vous aviez tapé cette suite de commandes au clavier, à part sur le
- plan des variables locales.
- Dans un fichier de commandes, la variable locale "argc" indique le
- nombre d'arguments reçus. AUSH positionne également des pseudo-variables
- locales (elles n'apparaissent pas dans la liste des variables données par la
- commande "set", et ne peuvent être modifiées) : la variable "0" contient le
- nom du fichier de commandes, les variables "1", "2",... les différents
- arguments, et la variable "*" la liste des arguments (à partir de "$1")
- séparés par un espace.
- Chaque fois que vous lancez AUSH, le fichier de commandes
- "S:.aushrc" est exécuté (s'il existe). L'argument optionnel "FROM fichier"
- permet d'exécuter le fichier de commandes indiqué plutôt que le fichier
- "S:.aushrc".
-
- 9. Gestion de l'historique
-
- AUSH peut mémoriser vos commandes, et vous permettre de les rappeler
- par la suite. Le mécanisme d'historique, qui ne fonctionne qu'en mode
- interactif, est contrôlé par la variable "history" (qui indique le nombre de
- commandes à conserver). La commande "history" (décrite plus loin) vous
- permet de voir le contenu de l'historique.
-
- La variable "savehist" indique le nombre de commandes sauvées entre
- chaque exécution d'un shell. Ce fichier (généré lors de la terminaison du
- shell) est automatiquement chargé lors du démarrage, et les commandes qu'il
- contient sont copiées dans l'historique. La variable "histfile" peut être
- définie, pour indiquer le nom du fichier de sauvegarde. Par défaut ce
- fichier est "S:.history".
-
- 10. Edition de la ligne de commandes
-
- Ce mécanisme permet de se passer du gestionnaire de console NewCON.
- Il est activé en affectant la valeur "1" à la variable "lineedit". Vous
- pouvez alors utiliser les touches suivantes pour éditer vos lignes de
- commande :
-
- gauche caractère précédent.
- droite caractère suivant.
- shift-gauche mot précédent.
- shift-droit mot suivant.
- shift-haut dernière commande commençant par la ligne courante.
- haut commande précédente dans l'historique.
- bas commande suivante dans l'historique.
- ^A va en début de ligne.
- ^B caractère précédent.
- ^E va en fin de ligne.
- ^F caractère suivant.
- ^K efface la fin de ligne.
- ^L ré-affiche la ligne.
- ^N commande suivante dans l'historique.
- ^P commande précédente dans l'historique.
- ^S échange les deux caractères précédents.
- ^T première commande dans l'historique.
- ^W efface la fin du mot.
- ^X efface la ligne.
- ^Z dernière commande dans l'historique.
- RETURN exécute la commande, après sauvegarde dans l'historique.
- ESC annule la commande, après sauvegarde dans l'historique.
-
- ^V le mot précédent est considéré comme un nom de variable
- et est remplacé par la valeur de cette variable.
- Exemple : echo version<^V> => echo 1.10.
- TAB complète le nom de fichier ou de variable.
- Exemple : cd ram:
- list Cl<TAB> => list ClipBoards/
- echo $hi<TAB> => echo $history
- S'il y a plusieurs possibilités, AUSH complète le plus
- loin possible et affiche la liste des possibilités.
- Pour compléter un nom de fichier, AUSH lui ajoute le
- contenu de la variable "filepat" et étend la "pattern"
- ainsi obtenue.
- ^D affiche la liste des possibilités pour compléter le
- nom de fichier ou de variable (sans modifier la ligne
- de commande).
-
- HELP appelle la requête de fichier. Si vous choisissez un
- fichier, son nom sera ajouté dans la ligne de commande.
-
- f1 à f10 remplacé par la valeur des variables "f1" à "f10", ou
- "F1" à "F10" si shifté.
-
- Toutes les touches de contrôle peuvent être redéfinies, à l'aide de la
- variable spéciale "keys" (voir plus loin).
-
- IMPORTANT: il arrive de temps en temps que l'éditeur se bloque et ne
- réagisse plus à ce que vous tapez au clavier. Dans ce cas, il suffit en
- général de taper "|" (SHIFT-\) pour le débloquer.
-
- 11. Gestion des répertoires
-
- Si vous définissez l'alias "dircmd", cet alias sera exécuté chaque
- fois que vous taperez un nom de répertoire comme nom de commande (sans
- argument, redirection, pipe, ni lancement en arrière-plan). Par exemple
- "alias dircmd cd" vous permet d'avoir un "cd" implicite : taper le nom d'un
- répertoire suffit pour y aller. Vous pouvez également définir un alias plus
- complexe, comme "alias dircmd 'cd [] , list FILES QUICK'".
-
- AUSH peut gérer une pile de répertoire (64 entrées). L'ajout d'un
- répertoire ce fait à l'aide la commande interne "pushd", le retrait par
- "popd", et l'affichage du contenu de la pile par "dirs" (ces commandes sont
- décrites plus loin).
- Vous pouvez utiliser cette pile dans vos commandes avec la forme
- "=n", où "n" est le numéro d'un répertoire dans la pile (indiqué par la
- commande "dirs").
-
- 12. Commandes internes
-
- Ce chapitre décrit toutes les commandes internes de AUSH. Ces
- commandes ne peuvent être lancées en arrière plan mais acceptent les
- redirections en entrée et en sortie. Elles retournent 0 (RETURN_OK) ou 20
- (RETURN_FAIL) suivant le cas.
- Lors de l'affichage de la valeur d'une variable par les commandes
- "setvar" ou "set", les attributs de cette variable sont affichés entre
- parenthèses ("x" pour exportable, "r" pour lecture seulement).
-
- alias
- Affiche la liste des alias et leurs définitions.
-
- alias nom
- Affiche la définition de l'alias indiqué.
-
- alias nom 'chaine'
- Défini un alias "nom" de valeur "chaine". Dans la chaine, le
- symbole "[]" indique où placer les arguments lors de la
- substitution de l'alias. Notez que la chaine DOIT être placée
- entre quotes simples.
-
- cd [rep]
- Sans argument affiche le nom du répertoire courant, sinon "rep"
- devient le répertoire courant.
-
- dirs
- Affiche le contenu de la pile des répertoires.
-
- echo [-c] [args...]
- Affiche les arguments sur la sortie standard, suivis d'un retour
- chariot sauf si vous indiquez l'option "-c".
-
- eval
- Passe en mode évaluation : toute ligne en entrée est analysée
- comme une expression (voir syntaxe plus haut) et le résultat
- affiché. Pour sortir de ce mode, tapez "x" tout seul sur une
- ligne.
-
- exit [code]
- Retourne au niveau d'exécution précédent, avec le code retour
- indiqué (0 par défaut). En mode interactif, termine le shell.
-
- export vars...
- Marque les variables locales indiquées comme "exportables". Ces
- variables deviennent alors lisibles, modifiables et détruisibles
- dans les fichiers de commandes lancés depuis le niveau
- d'exécution courant.
-
- for var in val1 val2... valn
- ...
- done
- Effectue une boucle. La variable "var" (locale) prend les
- valeurs indiquées dans la liste, et pour chaque valeur la
- séquence d'instruction entre le "for" et le "done" est exécutée
- une fois. Après le "done", la variable contient la dernière
- valeur pour laquelle la boucle a été effectuée. En mode
- interactif, le prompt devient celui indiqué par la variable
- "prompt3", entre le "for" et le "done".
- Vous pouvez également utiliser la forme "for var in val1 ..
- val2", qui effectue la boucle pour chaque valeur comprise entre
- les nombres "val1" et "val2" inclus. Si le nombre "val2" est
- inférieur au nombre "val1", la boucle est effectué avec un pas
- de -1. Les nombres "val1" et "val2" peuvent être négatifs.
-
- history
- Donne la liste des commandes présentes dans l'historique.
-
- if [NOT] condition
- ....
- [else
- ....]
- endif
- Exécution conditionnelle. En mode "interactif", la chaine
- d'invite devient celle indiquée par la variable "prompt2".
- La condition peut être :
-
- -d nom vrai si "nom" est un répertoire (1)
- -e nom vrai si "nom" existe (1)
- -f nom vrai si "nom" est un fichier (1)
- -o nom nom2 vrai si "nom1" et "nom2" existent et que
- "nom" est plus ancien que "nom2" (1)
- -s nom vrai si "nom" est un fichier non vide (1)
- str1 = str2 vrai si "str1" est identique à "str2"
- n1 LT n2 vrai si n1 est inférieur n2
- n1 EQ n2 vrai si n1 est égal à n2
- n1 GT n2 vrai si n1 est supérieur n2
- n1 LE n2 vrai si n1 est inférieur ou égal à n2
- n1 NE n2 vrai si n1 est différent de n2
- n1 GE n2 vrai si n1 est supérieur ou égal à n2
-
- Le mot-clé "NOT" avant une condition permet d'inverser cette
- condition. Jusqu'à 16 commandes "if" peuvent être imbriquées.
-
- (1) Si la lettre après le tiret est en majuscule (exemple:
- "-D"), le test échouera sans requêtes de l'AmigaDOS en cas
- de volume absent, lecteur de disquette vide, etc...
-
- jobs
- Affiche la liste des processus lancés en arrière plan.
-
- loadhist
- Force le chargement immédiat du fichier contenant l'historique
- des commandes. Cette commande peut être utile si vous changez la
- valeur de la variable "histfile" et que vous voulez prendre en
- compte le nouveau fichier.
-
- popd [nb]
- Sans arguments dépile le dernier répertoire empilé et en fait le
- répertoire courant, sinon tronque la pile des répertoires aux
- "nb" premiers répertoires ("popd 0" vide complètement la pile).
-
- pushd rep
- Empile le répertoire courant, puis fait de "rep" le répertoire
- courant.
-
- read [-f] var
- Affecte à la variable locale indiquée une ligne lue sur l'entrée
- standard. Retourne RETURN_FAIL en cas de fin de fichier.
- L'option -f permet d'interdire la saisie d'une chaine vide.
-
- readonly vars...
- Empêche toute modification ou destruction des variables (locales
- ou globales) indiquées. Cette opération est irréversible.
-
- set
- Affiche la liste des variables locales, ainsi que leur valeurs.
-
- set var
- Affiche la valeur de la variable locale "var".
-
- set var val
- Affecte la valeur "val" à la variable locale "var". La variable
- est créée si elle n'existe pas encore.
-
- setvar
- Affiche la liste des variables globales, ainsi que leur valeurs.
-
- setvar var
- Affiche la valeur de la variable globale "var".
-
- setvar var val
- Affecte la valeur "val" à la variable globale "var". La variable
- est créée si elle n'existe pas encore.
-
- shift
- Décale les arguments d'un fichier de commandes : la
- pseudo-variable "1" reçoit le contenu de "2", puis la
- pseudo-variable "2" celui de "3", etc... La variable "argc" et
- la pseudo-variable "*" sont mises à jour.
-
- source fichier
- Exécute le fichier de commandes indiqué. Si vous redirigez la
- sortie de cette commande, la redirection concernera toutes les
- commandes du fichier.
-
- stop [code]
- Interrompt l'exécution de la boucle "for...done" courante, avec
- le code retour indiqué (0 par défaut).
-
- time <commande>
- Lance l'exécution de la commande indiquée, puis affiche la durée
- (en secondes) d'exécution de cette commande. Peut être utilisé
- pour toutes les commandes, y compris les commandes internes et
- les commandes lancées en arrière plan.
-
- unalias noms...
- Détruit les alias indiqués.
-
- unset vars...
- Détruit les variables locales indiquées.
-
- writehist
- Force une sauvegarde immédiate de l'historique. Cette commande
- peut être utilisée par exemple avant de lancer un programme qui
- risque de "planter" votre Amiga.
-
- 13. Variables spéciales
-
- Les variables suivantes permettent de contrôler et de paramétrer
- AUSH. Sauf dans le cas où une valeur initiale est indiquée, elles ne sont
- pas définies au démarrage. Il est recommandé de les définir comme variables
- globales (c'est d'ailleurs ce que fait AUSH pour celles qui ont une valeur
- initiale) ou éventuellement comme variables Commodore/ARP.
-
- cmdnum numéro de commande, de la forme "_ShellNumber_CmdNumber"
- (garanti différent pour chaque commande exécutée).
- cwd nom du répertoire courant.
- debug si vaut "1", trace les commandes exécutées (avant et
- après première interprétation, utile pour la mise au
- point des fichiers de commandes).
- delim caractères délimiteurs de mots pour les fonctions "mot
- suivant", "mot précédent" et "efface la fin du mot" de
- l'éditeur de la ligne de commande.
- Valeur initiale : " :/".
- filepat chaine ajoutée au mot en cours pour compléter les nom de
- fichiers.
- Valeur initiale : "#?".
- fullhist si vaut "1", sauvegarde toutes les commandes dans
- l'historique, sinon ne sauvegarde pas deux fois de suite
- la même commande.
- histfile nom du fichier de sauvegarde de l'historique entre deux
- sessions. Si cette variable n'est pas définie,
- l'historique est sauvegardé dans "S:.history".
- histmin longueur minimale que doit avoir une commande pour être
- conservée dans l'historique.
- Valeur initiale : 3.
- history nombre de commandes conservées dans l'historique (si non
- défini ou inférieur à 1, seule la dernière commande est
- sauvée).
- Valeur initiale : 50.
- insert si vaut "1", l'édition de la ligne de commande se fait
- en mode "insertion" (mode "remplacement" sinon).
- Valeur initiale : 1.
- ioerror code d'erreur positionné par la dernière commande ayant
- échoué (pour l'instant ne marche que pour les commandes
- internes).
- Valeur initiale : 0.
- keys indique comment gérer les touches de contrôle sous
- l'éditeur de lignes de commande. La valeur de cette
- variable doit être une chaine de lettres minuscules,
- chaque lettre indiquant la touche de contrôle appelant
- une des fonctions de l'éditeur. C'est la position de la
- lettre dans la chaine qui détermine la fonction
- appelée :
-
- position 1 va en début de ligne
- position 2 caractère précédent
- position 3 liste des compléments
- position 4 va en fin de ligne
- position 5 caractère suivant
- position 6 efface fin de ligne
- position 7 re-affiche la ligne
- position 8 ligne suivante
- position 9 ligne précédente
- position 10 échange deux caractères
- position 11 va au début de l'historique
- position 12 remplace variable
- position 13 efface fin de mot
- position 14 efface ligne
- position 15 va à la fin de l'historique
-
- Par exemple, si la quatrième lettre est un "o", l'appui
- sur la touche ^o déplacera le curseur en fin de ligne.
- Dans la redéfinition des touches à utiliser, veuillez ne
- pas spécifier les touches de contrôle ^h, ^i, ^j, et ^m,
- car ces touches sont gérées spécialement.
- Valeur initiale : "abdefklnpstvwxz".
- language langue des messages d'erreurs. Les valeurs reconnues
- sont "english" et "deutsch". Pour toute autre valeur, ou
- si cette variable n'est pas définie, les messages seront
- en français.
- lineedit si vaut "1", active l'édition de la ligne de commande.
- noexpand si vaut "1", désactive l'extension des méta-caractères.
- path indique le chemin de recherche des commandes à exécuter,
- sous la forme d'une liste de noms de répertoires séparés
- par un caractère ";". Pour désigner le répertoire
- courant, indiquez "." comme nom de répertoire. Si un
- fichier avec le bit "s" est trouvé, une commande
- "source" est lancée automatiquement sur ce fichier.
- Exemple : setvar path 'ram:;.;c:;sys:utilities'
- prompt chaine d'invite, interprétée comme suit :
-
- %h numéro dans l'historique
- %# numéro du shell
- %i niveau d'imbrication des "if"
- %l niveau d'imbrication de boucle
- %c nom du répertoire courant (variable "cwd")
- %s dernier code retour (variable "status")
- %Vnom valeur de la variable "nom".
- %T heure (HH:MM:SS)
- %d jour du mois (1-31)
- %D jour de la semaine (Mon-Sun)
- %m mois (1-12)
- %M nom du mois (Jan-Dec)
- %y année (1900-1999)
- %C caractère CSI (0x9B)
- %N caractère retour chariot
- %f taille de mémoire FAST libre
- %v taille de mémoire CHIP libre
- %a taille de mémoire libre (CHIP+FAST)
-
- Valeur initiale : "%C0;33;40m< %# - %c >%C0;31;40m ".
- prompt2 idem que "prompt", mais utilisé entre "if" et "endif".
- Valeur initiale : "%i> ".
- prompt3 idem que "prompt", mais utilisé entre "for" et "done".
- Valeur initiale : "%l) ".
-
- NOTE : en l'absence de définition, "> " est utilisé comme prompt.
-
- savehist nombre de commandes sauvées entre chaque session (si non
- défini ou inférieur à 1 rien n'est sauvé).
- status code retour de la dernière commande exécutée.
- titlebar idem que "prompt", mais pour le titre de la fenêtre
- shell.
- trap commande(s) à exécuter lors de l'interruption d'un
- fichier de commandes ou d'une boucle "for...done" par
- l'appui sur CTRL-C ou CTRL-D. Contrairement aux autres
- variables spéciales, il est conseillé de définir cette
- variable localement (commande "set", permet à chaque
- fichier de commandes de la modifier en fonction de ses
- besoins). Il est également conseillé d'indiquer une
- commande "exit" comme dernière commande (exemple : set
- trap 'delete $tmpfile , exit 20'), sinon l'exécution
- reprendra au point où elle en était (pour ignorer les
- interruptions : set trap ';'). Si cette variable n'est
- pas définie, l'exécution est arrêtée avec un code retour
- de 20.
- version numéro de version de AUSH.
-
- 14. Notes
-
- Sauf si vous lui affectez une pile de plus de 4000 octets AVANT de
- le lancer, AUSH ne pourra exécuter plus d'une quinzaine de fichiers de
- commandes et/ou de boucles imbriquées (vous obtiendrez le message "pas assez
- de place dans la pile !").
- Si le nom indiqué pour les redirections en sortie est "TTY" (i.e.
- ">TTY" ou ">>TTY"), la redirection se fait vers la fenêtre du shell. Cela
- peut être utile dans un fichier de commandes, pour afficher un message alors
- que la sortie de toutes les commandes a été redirigée vers un fichier.
- Les pipes sont gérés à l'aide de fichiers temporaires créés dans le
- répertoire "T:", les tentatives d'utilisation de "PIPE:" et "FIFO:" se
- soldant pour l'instant par un Gourou dès que plus de deux commandes sont
- enchainées. Le répertoire "T:" est également utilisé pour stocker des
- fichiers temporaires lors des substitutions de commandes et de l'exécution
- des boucles "for...done".
- La forme "cmd &" correspond à la forme "run cmd" des shells
- Commodore et ARP. Notez que AUSH attend la fin de toutes les commandes
- lancées en arrière plan avant de terminer. La commande "jobs" vous permettra
- de savoir quelles sont ces commandes.
- Sous système 2.04, AUSH n'est pas capable de récupérer le code
- retour d'une commande lancée en arrière plan.
-
- 15. Historique
-
- v1.00 28-Feb-92, 29564 octets
- o Première version diffusée.
-
- v1.10 28-Mar-92, 31828 octets
- o Cherche les variables également dans les variables ARP/Commodore
- et Manx.
- o La touche "^D" affiche les possibilités pour compléter le nom de
- fichier ou de variable, les touches "^B", "^F", "^N" et "^P"
- font la même chose que "gauche", "droite", "bas" et "haut".
- o L'éditeur de ligne de commande efface le curseur pendant qu'il
- exécute une commande (affichage plus rapide).
- o La requête de fichier récupère le mot en cours pour initialiser
- le répertoire initial de la requête.
- o Remet à zéro les signaux SIGBREAKF en retour de l'éditeur de
- ligne de commandes (car ils sont positionnés si on utilise ^D,
- ^E, ou ^F).
- o Les formes "!!", "!n" et "!chaine" peuvent être indiquée
- n'importe où sur la ligne de commande.
- o Ajout des formes -D, -E, et -F à la commande "if".
- o Ajout de la forme "for var in val1 .. val2" pour la commande
- "for...done".
- o Ajout de l'alias "dircmd".
- o Ajoute un espace après une définition d'alias sans arguments (si
- on faisait "alias ls dir" puis "ls ram:" on avait un message
- "Please insert volume dirram: in any drive").
- o Messages d'erreur en allemand si la variable "language" vaut
- "deutsch".
- o Commande "setenv" renommée en "setvar" (plus de conflits avec la
- commande de Commodore), ajout de la commande "echo".
- o Ajout des variables "version" et "path", variable "ioerror"
- initialisée à "0", variable "insert" initialisée à "1", variable
- "autocd" supprimée.
-
- v1.11 29-Mar-92, 31832 octets
- o La commande "echo" tient compte des redirections en sorties
-
- v1.12 11-Apr-92, 32244 octets
- o Charge l'historique après l'exécution de "S:.aushrc", afin de
- prendre en compte une éventuelle modification de la valeur de la
- variable "history".
- o Ajout des formes "NE", "LE", et "GE" à la commande "if".
- o La forme "for i in val1 .. val2" accepte des nombres négatifs et
- que "val2" soit inférieur à "val1".
- o Plus de contrôle de la taille des arguments pour les commandes
- internes.
- o Ajout de la fonction "^V" à l'éditeur de ligne de commandes.
-
- v1.13 18-Apr-92, 32280 octets
- o Lors de la recherche d'une commande à l'aide de la variable
- "path" vérifie que l'objet trouvé est bien un fichier (et non un
- répertoire).
-
- v1.14 26-Apr-92, 32300 octets
- o Deux erreurs corrigées dans la substitution de commande :
- n'éliminait pas le "`" final, calcul de la longueur des
- arguments incorrect.
- o Une erreur corrigée dans le parser : interprétait quand même les
- caractères "<>,;" s'ils étaient en première position dans une
- chaine entre quotes.
- o Messages en allemands revus
-
- v1.15 01-May-92, 32364 octets
- o Ajout de la variable "histfile".
- o Deux erreurs corrigées dans le calcul de la longueur des
- arguments : oubliait de compter les guillements ou les quotes,
- et de prévoir un peu de place supplémentaire pour les arguments
- "splités".
-
- v1.16 11-May-92, 32404 octets
- o commande "echo" revue : quand on met l'option -c supprime
- vraiment le '\n' final (i.e. ne le remplace pas par un espace)
-
- v1.20 16-May-92, 32568 octets
- o ajout des commandes "loadhist" et "writehist"
- o ajout de la forme "%Vnom" à la syntaxe du prompt
- o modification du "parser" : n'analyse la partie droite d'une
- commande composée qu'après avoir exécuté la partie gauche, et
- donc :
- - "cd ram: , delete *" donne le résultat attendu ("*" était
- étendu avant de faire le "cd")
- - toutes les commandes simples peuvent être des alias (et non
- plus seulement la première)
- - on peut écrire une boucle sur une seule ligne ("for i in 1 ..
- 50 , echo $i , done" ne marchait pas, maintenant même "cd
- ram: , for i in *.c , echo $i , compress $i , done , echo
- fini" fonctionne !)
-
- v1.21 17-May-92, 32912 octets
- o ajout de la commande "time"
-
- v1.22 23-May-92, 32944 octets
- o bug corrigé dans la gestion des boucles "for...done" : lors de
- l'écriture des commandes dans le fichier temporaire, ne forçait
- pas une fin de ligne après chaque commande
-
- v1.23 01-Jun-92, 33328 octets
- o Plusieurs bugs corrigés dans la gestion des boucles "for...done"
- écrites sur une même ligne : "for i in 1 .. 5,echo $i,done"
- marche, ainsi que "for i in 1 .. 5 , list | wc , done"
- o Si trouve un fichier avec le bit "s" en cherchant une commande
- dans le chemin défini par la variable "path", lance
- automatiquement une commande "source" sur ce fichier.
- o La touche "^S" échange les deux caractères précédant le curseur.
- o Les touches "^D" et "<TAB>" sont utilisables sans préfixe, et
- donc en début de ligne ou après un espace.
- o Bug corrigé dans l'éditeur de ligne de commande: après un
- "shift-haut", les touches "haut" et "bas" ne donnaient pas les
- bonnes commandes.
-
- v1.30 14-Jun-92, 33932 octets
- o Plusieurs erreurs détectées par "Enforcer" et "Mungwall"
- corrigées.
- o Bug corrigé dans la commande "shift" : ne positionnait pas
- "argc" correctement.
- o Reconnait "$*" (remplacé par la liste des arguments séparés par
- un espace).
- o Ajout de l'option -f à la commande "read".
- o La variable "argc" est en lecture seulement.
- o Vérifie les noms de variables donnés aux commandes internes
- (interdit les pseudo-variables arguments).
- o Les spécifications "&[pri]" et "@pri" peuvent être indiquées
- n'importe où sur la ligne de commande.
-
- v1.40 26-Jun-92, 37764 octets
- o Recompilé avec le SAS/C 5.10b (avec pragmas et optimisation)
- o Peut être rendu résident (code "pure")
- o Enorme bug corrigé dans la fonction strxcat() (ne sauvegardait
- pas le registre a2)
- o Nombreuses modifications pour mieux tenir compte de la version
- du système, ainsi sous système 2.04 :
- - n'a plus besoin de "arp.library"
- - peut exécuter les programmes résidents/internes (ROM)
- - la commande "Execute" peut être utilisée
- o Modification de l'évaluateur d'expressions :
- - on peut indiquer des valeurs en hexa (0x1FD)
- - ajout des opérateurs "HEX", "<", ">", "&", et "|"
- o Ajout de l'option "-o" à la commande "if"
- o Bug corrigé dans la commande "if": n'appelait UnLock() dans
- certains cas d'erreur
-
- v1.41 30-Jun-92, 37864 octets
- o Correction dans la recherche des commandes: ne cherche plus le
- chemin si la commande est résidente
-
- v1.42 06-Jul-92, 37872 octets
- o Bug corrigé dans la gestion des boucles "for...done": "oubliait"
- les redirections des commandes dans la boucle
- o Ne fait plus crier "Enforcer" quand on fait "!string" (ou
- "shift-haut" dans l'éditeur de lignes de commandes) et qu'aucune
- commande commençant par "string" ne se trouve dans l'historique
-
- v1.50 21-Aug-92, 37736 octets
- o Ajout de la variable globale "keys" (permet de modifier les
- fonctions des touches de contrôle sous l'éditeur de lignes de
- commande)
- o Accepte l'argument "FROM file"
- o Contrôles plus stricts au démarrage: proc->pr_CLI valide, pas de
- lancement depuis le WB, etc...
- o Bug corrigé dans l'évaluation des expressions: affichait le
- résultat en décimal même si on indiquait "HEX"
- o Bug corrigé sous système 1.3: ne donnait pas le chemin complet
- de la commande à la fonction qui lance l'exécution
-
-
-
-
-